查看原文
其他

印度疫情,爆炸!

Jack Cui Jack Cui 2022-07-26

昨天,印度一天暴增 35万 确诊病例!

疫情彻底失控!

最近十几天,印度的日增感染人数急剧增多,从每日新增 1万 多人,迅速增加到日增 35万 多人。

部分医院彻底瘫痪,一张病床 2、3个 病人共用,氧气严重告急,有些病人根本来不及发病,就活活窒息而亡。

在印度首都新德里,大约每 5分钟 就有一个人死于新冠肺炎,疫情形势严峻让印度的殡葬业几乎面临崩溃。

由于死亡人数过于恐怖,多个火葬场发生遗体堆积,火化需要排队,24小时轮轴转焚烧,连设备金属都被烧化了。

火葬场不堪重负,甚至把公园、停车场、广场都改造成露天焚烧场,遍地的尸体等着焚烧,红色的火光冲天而起,连木材也出现短缺涨价!

人间地狱,惨不忍睹!

Python 分析

我对疫情数据进行了整理和分析,看一看印度的疫情到底有多严重,对我们又会有哪些影响。

因为我本身从事的是算法工作,数据分析也是个外行,有不到位的地方,大家可以自己动手尝试。

授人与鱼不如授人以渔,数据下载和可视化分析的代码我都会发出来,就当做一个数据可视化的小教程吧

我们直接开始!

数据下载

目前,最全面的疫情数据,是我曾经介绍过的一个开源项目:

https://github.com/CSSEGISandData/COVID-19

比较权威,更新至今,有从 2020-01-22 到现在的全球疫情的所有数据。

数据就放在这个目录下:

COVID-19/csse_covid_19_data/csse_covid_19_daily_reports/

以 csv 的格式进行存储,数据每天都会更新,想要下载所有数据,可以直接下载整个工程。

如果有代理,可以使用如下代码直接下载:

# 作者:Jack Cui
# 公众号:jackcui-ai
import datetime
import requests
import glob
import datetime
from contextlib import closing

today = datetime.date.today()
lastday = (today - datetime.timedelta(days=1)).strftime('%m-%d-%Y')
lastday = datetime.datetime.strptime(lastday, "%m-%d-%Y")
startday = datetime.datetime.strptime("01-22-2020""%m-%d-%Y")
for i in range((lastday - startday).days + 1):
    day = startday + datetime.timedelta(days=i)
    day_str = "%02d-%02d-%d" % (day.month, day.day, day.year)
    data_url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/{}.csv".format(day_str)

    with closing(requests.get(data_url, stream=True)) as response:
        chunk_size = 1024  
        if response.status_code == 200:
            with open("{}.csv".format(day_str), "wb"as file:  
                    for data in response.iter_content(chunk_size=chunk_size):  
                        file.write(data)
        else:
            print('链接异常')

代码很简单,一个简单的爬虫程序,下载从 2020-01-22 至今的所有数据。

Github 下载太慢,也可以直接下载我打包好的数据,数据的日期是从 2020-01-22 至今的,公众号后台回复:疫情,即可下载。

csv 数据的处理用 pandas 很方便,做数据分析必需掌握的第三方库。

具体的使用方法,英语水平可以的,可以看英文的官方文档:

https://pandas.pydata.org/pandas-docs/stable/index.html

如果看不懂,这里有国内网友做的中文文档:

https://www.pypandas.cn/docs

可视化采用 pyecharts,它是基于 Echart 开发的 Python 版本可视化库,也是做数据分析必须掌握的第三方库。

使用方法,可以直接看作者的中文教程:

https://github.com/pyecharts/pyecharts

数据处理库和可视化库都有了,直接开搞!

数据可视化

我们先看下印度的确诊人数死亡人数治愈人数情况:

# 作者:Jack Cui
# 公众号:jackcui-ai
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
from selenium import webdriver
from pyecharts.charts import Map
from pyecharts.charts import Geo
from pyecharts import options as opts
import requests
import json
import re
import glob
import datetime 
import os
import pandas
from contextlib import closing

from datetime import datetime
# csv 文件路径
csvs_path = glob.glob("*.csv")
csvs_path = sorted(csvs_path, key=lambda x:datetime.strptime(x.split("/")[-1].split(".")[0],'%m-%d-%Y'), reverse=False)

last_df = None
for idx, csv_path in enumerate(csvs_path):
    if idx == 0:
        df = pandas.read_csv(csv_path)
        last_df = df
    else:
        df = pandas.read_csv(csv_path)
        last_df = pandas.concat([df, last_df])
word_df = last_df

India_df = word_df[word_df['Country_Region'] == "India"]

today = datetime.date.today()
lastday = (today - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
lastday = datetime.datetime.strptime(lastday, "%Y-%m-%d")
startday = datetime.datetime.strptime("2020-1-22""%Y-%m-%d")

date_data = []
confirmed_data = []
deaths_data = []
recovered_data = []

for i in range((lastday - startday).days + 1):
    day = startday + datetime.timedelta(days=i)
    day_str = str(day)[:10]

    confirmed_num = India_df[India_df['Last_Update'].str.startswith(day_str)]['Confirmed'].sum()
    deaths_num = India_df[India_df['Last_Update'].str.startswith(day_str)]['Deaths'].sum()
    recovered_num = India_df[India_df['Last_Update'].str.startswith(day_str)]['Recovered'].sum()
    
    date_data.append(day_str)
    confirmed_data.append(confirmed_num)
    deaths_data.append(deaths_num)
    recovered_data.append(recovered_num)

(
    Line()
    .add_xaxis(xaxis_data=date_data)
    .add_yaxis(
        series_name="确诊人数",
        y_axis=confirmed_data,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="死亡人数",
        y_axis=deaths_data,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="治愈人数",
        y_axis=recovered_data,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="印度疫情统计"),
        tooltip_opts=opts.TooltipOpts(trigger="axis"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
        xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
    )
    .render("india_line_chart.html")
)

运行效果,可以看到确诊人数突破 1700W,治愈率紧跟确诊人数。

取最新的结果计算死亡率和治愈率。

print("死亡率:%.2f%%" % (deaths_data[-1]/float(confirmed_data[-1])*100))
print("治愈率:%.2f%%" % (recovered_data[-1]/float(confirmed_data[-1])*100))

印度疫情死亡率:1.12%,治愈率:82.54%

看到了这些数据,我不禁陷入沉思。

印度这么牛逼?死亡率好低!这跟我们这些天,在国内看到的印度疫情新闻,露天焚尸、疫情失控的报道出入很大

我们看看美国的,还是用上述代码统计,将 Country_Region 的取值改为 US ,拿到美国的数据来对比看下。

统计结果为,美国疫情死亡率:1.78%,治愈率:77.5%

印度的医疗水平,比美国还要强大?

造成这种局面,我能想到的三个原因:

  • 印度的医疗水平确实比美国牛逼
  • 确诊人数激增太快,死亡率还没跟上
  • 数据有问题。

首先排除第一条,客观来讲,从我了解到的印度的卫生条件和医疗水平来看,印度落后太多。

第二条不无可能,但我更相信数据本身就有问题。

可以明确的是,数据来源不会有问题,因为这份数据是来自各国的官方报道。

那就看官方报道的疫情数据是否真实了

我们继续用代码,统计看下印度每日的新增情况。

# 作者:Jack Cui
# 公众号:jackcui-ai
import datetime
import pyecharts.options as opts
from pyecharts.charts import Line

today = datetime.date.today()
lastday = (today - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
lastday = datetime.datetime.strptime(lastday, "%Y-%m-%d")
startday = datetime.datetime.strptime("2020-01-22""%Y-%m-%d")
num = (lastday - startday).days

crease_data = []
date_data = []
lastday_confirmed_num = 0
crease_num = 0

for i in range((lastday - startday).days + 1):
    day = startday + datetime.timedelta(days=i)
    day_str = str(day)[:10]
    confirmed_num = India_df[India_df['Last_Update'].str.startswith(day_str)]['Confirmed'].sum()
    
    if i == 0:
        crease_num = 0
    else:
        crease_num = confirmed_num - lastday_confirmed_num
    if crease_num < 0:
        crease_num = 0
    lastday_confirmed_num = confirmed_num
    date_data.append(day_str)
    crease_data.append(crease_num)

(
    Line(init_opts=opts.InitOpts(width="1000px", height="800px"))
    .add_xaxis(xaxis_data=date_data)
    .add_yaxis(
        series_name="新增确诊人数",
        y_axis=crease_data,
        markpoint_opts=opts.MarkPointOpts(
            data=[
                opts.MarkPointItem(type_="max", name="最大值"),
                opts.MarkPointItem(type_="min", name="最小值"),
            ]
        ),
        markline_opts=opts.MarkLineOpts(
            data=[opts.MarkLineItem(type_="average", name="平均值")]
        ),
    )

    .set_global_opts(
        title_opts=opts.TitleOpts(title="印度每日新增确诊人数"),
        tooltip_opts=opts.TooltipOpts(trigger="axis"),
        toolbox_opts=opts.ToolboxOpts(is_show=True),
        xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
    )
    .render("india_crease_line_chart.html")
)

我们只看趋势,对于一些负增长,这里简单粗暴地限制为0

印度最近连破单日新增的世界纪录,连续 6 天新增确诊人数超过 30万 人。

我们还可以用 pyecharts 可视化更多的结果,比如饼状图、地理图标等。

类似这种:

可以清晰地看到疫情分布情况,也可以针对每个国家单独分析。使用 pyechartsGeoMapBMap 模块即可。

熬夜写文,代码就写到这吧,大家可以自己动手尝试一下。

印度疫情

印度疫情最初控制的很好,为何最近大反弹?

导致这种暴涨情况的是一场场近乎自作孽的宗教活动。

其中,最大的一起宗教活动就是大壶节,这一度是唯一一个能从太空观察到的人类聚集行为。

今年 4月12日 印度有超 200万 的朝圣者,聚集在河边沐浴河水,并且全都不戴口罩。

这种大型庆祝活动,也并不发生在一处,印度安得拉邦库诺尔区也有大批民众无视防疫规定,不带口罩情况下一起庆祝乌加迪节,互掷牛粪以祈求健康繁荣。

而这种宗教节日,通常不会一天搞定,而需要持续数月

而印度政府,为了巩固政权,也在默认这些行为,并没有加以控制。

照这样发展下去,印度将成为世界疫情的王炸

目前,印度卫生部宣布在马哈拉施特拉邦发现了一种双重突变的新型毒株。

所谓双重突变,就是在变异病毒的基础上,再次变异,拥有了2处不同的突变蛋白。

这个双变异新毒株,被命名为B.1.617,它的刺突蛋白发生了两个突变,分别被命名为E484QL452R

这是人类首个发现的,同时携带两个突变的新冠变异毒株。

刺突蛋白的作用是帮助新冠病毒进入人体细胞,并作为免疫系统的识别特征,一旦刺突蛋白发生突变,那么新的毒株就很容易绕开原有的免疫系统,从而具备更强的感染性

更厉害的又来了,4月21日,也就是上周,印度在西孟加拉邦发现了一款新的毒株,在双突变毒株的基础上再增加了一个突变。

也就是说,世界上已经出现了三重突变的新冠病毒毒株。

目前,印度的研究人员将其命名为“孟加拉毒株”,并认为它可能比双突变毒株更具备传染性。

因为研究时间太短,具体的传染性和致命性还需要进一步的研究,但这绝对不是啥好消息。

双重突变毒株刚开始研究没几天,你这三重突变的新毒株就来了,这啥时候是个头。

我们最近常说内卷,这次病毒都跟着卷起来了!

病毒为了更好的传播,都开始提升自己的战斗力了,三重突变都来了。

连病毒都知道世界是内卷的,想要活下去就要不断的进化自己。

不说了,这就去学习了。

总之,大家注意安全,不要松懈,该打疫苗打疫苗。

我是 Jack,我们下期见。

·················END·················



推荐阅读

•   嘿,来聚个类!•   五年了•   我,差点上央视



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存